package com.edu.mapper;

import com.edu.bean.Emp;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author:荷包蛋
 * @Date :2022/9/29 - 09 - 29 - 16:10
 */
public interface EmpMapper {

    int insertEmp(Emp emp);

    int deleteEmp(int empId);

    int updateEmpAge(@Param("empId") int empId, @Param("empAge")int empAge);

    /*
     *   查询返回了 一条结果
     *       接口的返回值 1 表所对应的类型
     *                    映射器里 resultMap 使用对应的 类型即可
     * */
    Emp selectEmpById(int empId);

    /*
     *   查询只返回一条结果，
     *   可以设置 接口的 返回值类型为 Map<String,Object>,其中key是查询结果列名，value是对应的列值。
     *
     * */
    Map<String,Object> selectEmpById2(int empId);


    List<Emp> selectEmp2(Emp emp);

    List<Emp> selectEmpByAge(@Param("minAge") int minAge,@Param("maxAge") int maxAge);

    List<Emp> selectEmps(@Param("minAge") int minAge,@Param("maxAge") int maxAge,@Param("emp") Emp emp);

    /*
     *  查询返回多条数据，可以把 每条数据 放在一个对应的对象里，再把所有对象放进一个list集合
     *  resultType : 对象的类型
     * */
    List<Emp> selectAllEmp();

    /*
     *  查询返回多条数据，可以把 每条数据 放在一个map里，再把所有map放进一个list集合
     *  resultType :map
     * */
    List<Map<String,Object>> selectAllEmp2();

    /*
     *  查询结果是 一个数据（一个数字 一个字符串），那么接口中直接使用对应的类型
     *   配置文件中 使用 resultType :基本型的简写即可
     * */
    int selectEmpNum();

    float selectAvgAge();
}
